package com.mayikt.base;

import com.mayikt.bean.MeiteBeanUtils;
import com.mayikt.constants.Constants;

import lombok.Data;

/**
 * 微服务接口实现该接口可以使用传递参数可以直接封装统一返回结果集
 */
@Data
public class BaseApiService {

    public BaseResponse setResultError(Integer code, String msg) {
        return setResult(code, msg, null);
    }

    /**
     * 返回错误，可以传msg
     */
    public BaseResponse setResultError(String msg) {
        return setResult(Constants.HTTP_RES_CODE_500, msg, null);
    }

    /***
     * 返回成功，可以传data值
     */
    public BaseResponse setResultSuccess(Object data) {
        return setResult(Constants.HTTP_RES_CODE_200, Constants.HTTP_RES_CODE_200_VALUE, data);
    }

    /**
     * 返回成功，沒有data值
     */
    public BaseResponse setResultSuccess() {
        return setResult(Constants.HTTP_RES_CODE_200, Constants.HTTP_RES_CODE_200_VALUE, null);
    }


    /**
     * 通用封装 通用封装
     */
    public BaseResponse setResult(Integer code, String msg, Object data) {
        return new BaseResponse(code, msg, data);
    }

    public BaseResponse setResult(int dbCount, Object successMsg, String errorMsg) {
        return dbCount > 0 ? setResultSuccess(successMsg) : setResultError(errorMsg);
    }

    /**
     * dto 转换do
     */
    public static <Do> Do dtoToDo(Object dtoEntity, Class<Do> doClass) {
        return MeiteBeanUtils.dtoToDo(dtoEntity, doClass);
    }

    /**
     * do转换成dto
     */
    public static <Dto> Dto doToDto(Object doEntity, Class<Dto> dtoClass) {
        return MeiteBeanUtils.doToDto(doEntity, dtoClass);
    }


}
